/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ruteador;

import java.util.ArrayList;


/**
 *
 * @author jorgeorm
 */
public class TSP {
    ArrayList<PuntoTSP> puntos;
    int puntoInicial;
    int [][] matrizDistancias;
    
    public TSP(ArrayList<PuntoTSP> punticos, int idPuntoInicial){
        this.puntos = punticos;
        puntoInicial = idPuntoInicial;
        calcularMatrizDistancias();
    }

    public ArrayList<PuntoTSP> getPuntos() {
        return puntos;
    }

    public void setPuntos(ArrayList<PuntoTSP> puntos) {
        this.puntos = puntos;
    }

    public int[][] getMatrizDistancias() {
        return matrizDistancias;
    }
    
    public int getPuntoInicial(){
        return puntoInicial;
    }

    public void setMatrizDistancias(int[][] matrizDistancias) {
        this.matrizDistancias = matrizDistancias;
    }
    
    
    
    private void calcularMatrizDistancias(){
        
        /*TODO: Meter el calculo de las distancias utilizando el serivico de matrices de google maps
         */
        matrizDistancias = new int [puntos.size()][puntos.size()];
        
        
        /*TODO: Implementar con dos estrategias
         * 1. Tener en cuenta limitación de cantidad de puntos de google maps matrix,
         *  a. Hacer pedidos de 100 en 100 y esperar si es necesario la respuesta
         * 2. Hacerlo con el api premier*/
    }
    
}
class PuntoTSP {
    double latitud, longitud;
    String nombrePunto;
    
    public PuntoTSP(String nombrePunto, double latitud, double longitud){
        this.nombrePunto = nombrePunto;
        this.latitud = latitud;
        this.longitud = longitud;
    }

    public double getLatitud() {
        return latitud;
    }

    public void setLatitud(double latitud) {
        this.latitud = latitud;
    }

    public double getLongitud() {
        return longitud;
    }

    public void setLongitud(double longitud) {
        this.longitud = longitud;
    }

    public String getNombrePunto() {
        return nombrePunto;
    }

    public void setNombrePunto(String nombrePunto) {
        this.nombrePunto = nombrePunto;
    }
}
